1. Field of the Invention
The present invention relates to encoding for disk drives and, particularly, to an improved Viterbi detector for sampled amplitude read channels.
2. Description of the Related Art
Viterbi decoders are typically employed in sampled amplitude channels. Viterbi decoders are specific implementations of the Viterbi algorithm. A Viterbi detector unit is based on periodic examination of metrics associated with alternate sequences of recorded bits, wherein each sequence is typically labeled as a xe2x80x9cpathxe2x80x9d and the associated metric is designated a xe2x80x9cpath metric.xe2x80x9d The most probable path is then determined by choosing a minimum path metric based on an iterative process involving successive comparison of associated path metrics. This is illustrated by way of example in FIG. 1, which shows an exemplary trellis for a partial response channel. In particular, as shown in FIG. 1, a Viterbi detector is characterized by a labeled trellis H having Q states s1,s2, . . . ,sQ. In the example shown, Q=4. For each state sand each time k, a metric ms(k), a survivor sequence sss(k), metric/survivor sequence update rules, and an initial state s* are defined. In the example illustrated, s* is the state s1 at time kxe2x88x924. Given a state s (e.g., state 100) and a time k, the survivor sequence sss(k) is a label sequence in H starting from s* at time zero and ending on s at time k. Usually, only the last t labels of each survivor sequence are saved. The parameter t is called the truncation depth of the Viterbi detector. Thus, in FIG. 1, t=4.
In traditional Viterbi detectors, the updating rules are as follows. Let s1, s2, . . . , sq be the predecessor states to the state s. And let hi be the label on the edge from si to s. Further, let rk be the current value of the received sequence. Then, the updating rules are:
Update ms(k): ms(k)=min{ms1(kxe2x88x921)+(rkxe2x88x92h1)2, . . . ,msq(kxe2x88x921)+(rkxe2x88x92hq)2}.
Update sss(k): If the jth state, sj, produces the minimum above (ms(k)), then sss(k)=(sssj(kxe2x88x921), hj).
For every state, s, and time, k, let vs=(last t coordinates of sss(k)). In general, the output of a Viterbi detector at time k, Y(k), is a function of
(xcexds1(1),xcexds2(1), . . . ,xcexdsQ(1):ms1(k),ms2(k) , . . . ,msQ(k)),
as shown:
Y(k)=F(xcexds1(1),xcexds2(1), . . . ,xcexdsQ(1):ms1(k) ,ms2(k), . . . ,msQ(k).
A first conventional implementation of the function F is shown below:
F1 (xcexds1(1),xcexds2(1), . . . ,xcexdsQ(1):ms1(k),ms2(k), . . . , msQ(k))=xcexdsw(1), for a fixed w.
That is, the Viterbi detector output at time k is determined to be the output at a particular state w. For example, in FIG. 1, an arbitrary state w is state 52. According to F1, the Viterbi output is the path ending at state 52 for which the metric is minimized.
Another conventional implementation is shown below:
F2(xcexds1(1),xcexds2(1), . . . ,xcexdsQ(1):ms1(k),ms2(k), . . . ,msQ(k)=xcexdsw(1),
where
msw(k)=min{ms1(k),ms2(k), . . . ,msQ(k)}.
F2 thus determines a path metric for each state at time k (e.g., states 50, 52, 54, and 56) and the output of the Viterbi detector is the sequence which minimizes the branch metrics over all the states and all possible paths.
The function F1 is easy to implement, but F2 is a better functionxe2x80x94it produces fewer detector errors. However, when Q is large F2 is not easy to implement.
These and other drawbacks in the prior art are overcome in large part by a system and method according to the present invention. In particular, a survival selection rule according to the present invention compares paths at a plurality of endpoint states but fewer than the total number of endpoint states.